from app import create_app
from app.libs.error import APIException
from app.libs.error_code import ServerError
from werkzeug.exceptions import HTTPException

app = create_app()


@app.errorhandler(Exception)
def framework_error(e):
    if isinstance(e, APIException):
        return e
    if isinstance(e, HTTPException):
        code = e.code
        msg = e.description
        error_code = 998
        return APIException(msg, code, error_code)
    else:
        # log
        if not app.config['DEBUG']:
            return ServerError()
        else:
            raise e


# 确定if中的语句只在入口文件中运行，被以模块的方式导入不会执行
# 在本地开发环境中用的是flask自带的web服务器，如果项目被部署到生产环境中通常不使用flask自带服务器，而是nginx+uwsgi组合作为web服务器。
# 在生产环境中，原本作为入口文件将以模块的方式被加载启动，if中的内容将不会被执行
# 如果没有if判断，将会启动两个web服务器
if __name__ == '__main__':
    app.run(debug=app.config['DEBUG'])
